Grid computing is touted as one of the most important and promising paradigms for applications that require long computing times or large storage spaces. It is attracting a growing number of users to develop larger scale distributed software applications than ever before. In general, grid computing enables resource virtualization, on-demand provisioning, and service (resource) sharing between organizations. In summary, grid computing provides the ability to use a set of open standards and protocols, to gain access to applications and data, processing power, storage capacity and a vast array of other computing resources over the Internet. It is a type of parallel and distributed system that enables the sharing, selection, and aggregation of resources distributed across multiple administrative domains based on the resources availability, capacity, performance, cost and users' quality-of-service requirements.
In recent years, grid computing with web services for components oriented systems, such as J2EE based applications is gaining popularity. The J2EE based applications are built as a set of components. Generally, these components are hosted by a container or a server, which provides an execution environment to the components. In such a system, multiple applications may be hosted in a single container. In such a scenario, upgrading an application or hot redeployment of an application in a container does not require restarting the container as J2EE based container support hot deployment mechanisms. This is a very desirable feature as it would not impact running of other applications residing in the system. Hot deployment refers to a process of deploying/redeploying an application without having to shutdown/restart an application container. Hot deployment is commonly used in containers that run in standalone mode or homogenous cluster environment where every new application change is propagated to all the servers connected in the environment.
Whereas, in grid computing environments there can be potentially many containers running several applications and different servers can be running different set of applications, i.e., the applications can run in multi-vendor and multi-version application server environments. Such a complexity can create a two fold problem in grid computing environment. The first being that the information about which server is running what application is dynamic and not static. The second being that the application containers may be running on different platforms as described above and can require different data transfer mechanisms for hot deployment/redeployment. This can result in requiring the grid system to be temporarily suspended and reinitialized during the service deployment/redeployment. This can further result in requiring stopping all the running services and applications. This can be a significant overhead on the grid system.